home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / libscsi1.zoo / LibScsi-0.01 / libscsi.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-03-14  |  2.6 KB  |  72 lines

  1. /*
  2.  * libscsi.h - Copyright Steve Woodford, August 1993.
  3.  *
  4.  * Library header file. Only needed by functions internal to the library.
  5.  */
  6.  
  7. #define PRIVATE static
  8. #define EXTERN  extern
  9. #define PUBLIC  /* */
  10.  
  11. #define Bzero       (void)bzero
  12. #define Bcopy       (void)bcopy
  13.  
  14. /*
  15.  * List all the Scsi Commands we support
  16.  */
  17. #define SZ_CMD_TEST_UNIT_READY  0x00
  18. #define SZ_CMD_REZERO           0x01
  19. #define SZ_CMD_REQUEST_SENSE    0x03
  20. #define SZ_CMD_READ             0x08
  21. #define SZ_CMD_WRITE            0x0a
  22. #define SZ_CMD_SEEK             0x0b
  23. #define SZ_CMD_WRITE_FILEMARKS  0x10
  24. #define SZ_CMD_SPACE            0x11
  25. #define SZ_CMD_INQUIRE          0x12
  26. #define SZ_CMD_MODE_SELECT      0x15        /**********/
  27. #define SZ_CMD_ERASE            0x19
  28. #define SZ_CMD_MODE_SENSE       0x1a
  29. #define SZ_CMD_LOAD_UNLOAD      0x1b
  30. #define SZ_CMD_MEDIA_REMOVAL    0x1e
  31.  
  32. typedef struct {
  33.     u_char      sc_command;         /* SCSI Command code */
  34.     u_char      sc_z[4];            /* 5 command dependent bytes */
  35.     u_char      sc_link;            /* Final 'link' byte (usually zero) */
  36. } Scsi_Cmd;
  37.  
  38. #define CMD(id, cmd)    ((cmd) | ((id) << 5))
  39. #define LUN(lu, val)    ((val) | (((lu) & 0x38) << 3))
  40.  
  41. #define DMA_READ        0           /* ST reads data from SCSI target */
  42. #define DMA_WRITE       1           /* ST writes data to SCSI target */
  43. #ifndef MAX_SCSI_ID
  44. #define MAX_SCSI_ID     7
  45. #define MAX_LUN_ID      7
  46. #endif
  47.  
  48.  
  49. /*
  50.  * These macros allow easy access to the 'PER-TARGET' timeout settings.
  51.  * Note that Scsi_Timeouts is declared in libscsi.a and contains
  52.  * default values suitable for a Scsi Hard Disk drive only!
  53.  */
  54. #define T_Normal(target)    (_Scsi_Timeouts[(target) & 0x07].st_normal)
  55. #define T_Rezero(target)    (_Scsi_Timeouts[(target) & 0x07].st_rezero)
  56. #define T_Read(target)      (_Scsi_Timeouts[(target) & 0x07].st_read)
  57. #define T_Write(target)     (_Scsi_Timeouts[(target) & 0x07].st_write)
  58. #define T_Load(target)      (_Scsi_Timeouts[(target) & 0x07].st_load)
  59. #define T_Unload(target)    (_Scsi_Timeouts[(target) & 0x07].st_unload)
  60. #define T_Seek(target)      (_Scsi_Timeouts[(target) & 0x07].st_seek)
  61. #define T_Rewind(target)    (_Scsi_Timeouts[(target) & 0x07].st_rezero)
  62. #define T_Retension(target) (_Scsi_Timeouts[(target) & 0x07].st_retension)
  63. #define T_Space(target)     (_Scsi_Timeouts[(target) & 0x07].st_space)
  64. #define T_Erase(target)     (_Scsi_Timeouts[(target) & 0x07].st_erase)
  65.  
  66.  
  67. EXTERN  short       _Scsi_Command(u_short, Scsi_Cmd *, void *, u_char),
  68.                     _Scsi_Read_Bytes(Scsi_Cmd *, void *, u_short),
  69.                     _Scsi_Timeout(short);
  70. EXTERN  u_short     _Scsi_Dma_Len;
  71. EXTERN  Sc_Timeout  _Scsi_Timeouts[MAX_SCSI_ID + 1];
  72.